﻿Imports System.IO

Public Class CLS_SQL_FILE_FTP
    Inherits CLS_FILE_FTP

    Public Sub IniciaProceso(ByRef rp As DotNetResponse.SQLPersistence, ByVal Id_Task As Integer)
        Try
            Dim EXEC As New DotNetDAL.SQLPersistence(False, "cnn", DotNetDAL.SQLPersistence.Provider.SQLCLIENT)
            rp.StoredProcedure = "SP_TASK_GET_SRM_QRY_FILE_SQL"
            rp.ClearParametro()
            rp.AddParametro(Id_Task)
            EXEC.ExecuteDatatable(rp)

            If rp.Errores Then
                rp.AddErrores(rp.MensajeError)
            End If

            If rp.TieneDatos Then
                'Pasar la QUERY
                Try
                    Dim Archivo As String = String.Empty
                    'Dim exec0 As New DotNetDAL.SQLPersistence(False, DotNetDAL.SQLPersistence.Provider.SQLCLIENT, rp.DtTable.Rows(0).Item("S_SRM_BASE_DATO").ToString)
                    Dim rp0 As New DotNetResponse.SQLPersistence
                    'exec0.ExecuteDatatable(rp0, rp.DtTable.Rows(0).Item("S_QUERY").ToString)

                    'If Not rp0.Errores Then
                    '    If Not rp0.TieneDatos Then
                    '        rp.AddErrores("No Existen Datos en CONSULTA SQL")
                    '        Exit Sub
                    '    End If

                    Dim cnn As New SqlClient.SqlConnection(rp.DtTable.Rows(0).Item("S_SRM_BASE_DATO").ToString)
                    cnn.Open()

                    Dim comando As New System.Data.SqlClient.SqlCommand
                    Dim dss As DataSet
                    Dim dap As System.Data.SqlClient.SqlDataAdapter
                    comando.CommandText = rp.DtTable.Rows(0).Item("S_QUERY").ToString
                    comando.CommandType = CommandType.Text
                    comando.CommandTimeout = 120
                    comando.Connection = cnn
                    dss = New DataSet
                    dap = New System.Data.SqlClient.SqlDataAdapter
                    dap.SelectCommand = comando
                    dap.Fill(dss, "Nodos")

                    If dss.Tables.Count = 0 Then
                        rp.AddErrores("No Existen Datos en CONSULTA SQL")
                        Exit Sub
                    End If
                    If dss.Tables(0).Rows.Count = 0 Then
                        rp.AddErrores("No Existen Datos en CONSULTA SQL")
                        Exit Sub
                    End If

                    rp0.DtTable = dss.Tables(0)
                    dss.Dispose()
                    dap.Dispose()
                    comando.Dispose()

                    Try
                        Archivo = My.Computer.FileSystem.GetTempFileName.ToString
                    Catch ex As Exception
                        rp.AddErrores("Error al crear archivo para interfaz : " & ex.Message)
                    End Try

                    Try
                        Dim objWriter As New System.IO.StreamWriter(Archivo, True)
                        Dim I As Integer
                        Dim J As Integer
                        Dim Fila As String = ""

                        'Cabecera (Columnas)
                        For I = 0 To rp0.DtTable.Columns.Count - 1

                            Fila = Fila & rp0.DtTable.Columns(I).ColumnName

                            If I <= rp0.DtTable.Columns.Count - 1 Then
                                Fila = Fila & vbTab
                            End If
                        Next

                        objWriter.WriteLine(Fila)

                        For I = 0 To rp0.DtTable.Rows.Count - 1
                            Fila = ("")
                            For J = 0 To rp0.DtTable.Columns.Count - 1
                                Fila = Fila & rp0.DtTable.Rows(I).Item(J)

                                If J = rp0.DtTable.Columns.Count - 1 Then
                                    Fila = Fila & vbTab
                                End If
                            Next

                            objWriter.WriteLine(Fila)
                        Next

                        objWriter.Close()

                        Try
                            'ruta respaldo

                            Dim Servidor As String = rp.DtTable.Rows(0).Item("S_IP_SERVIDOR").ToString
                            Dim Usuario As String = rp.DtTable.Rows(0).Item("S_USR_SERVIDOR").ToString
                            Dim Clave As String = rp.DtTable.Rows(0).Item("S_PW_SERVIDOR").ToString
                            Dim RutaRespaldo As String = rp.DtTable.Rows(0).Item("S_RUTA_RESPALDO").ToString
                            Dim ArchivoSalida As String = rp.DtTable.Rows(0).Item("S_NOMBRE_ARCHIVO_SALIDA").ToString

                            'FTP
                            If Left(Servidor, 3).ToUpper = "FTP" Then
                                DotNetDAL.FTP.DeleteFtp(Archivo, Servidor, ArchivoSalida, Clave, Usuario)
                                DotNetDAL.FTP.SendFTP(rp, Archivo, Servidor, ArchivoSalida, Clave, Usuario)
                            Else
                                'Folder de red
                                If Left(Servidor, 2).ToUpper = "\\" Then
                                    CopiarEnRecursoRed(Usuario, Clave, Archivo, Servidor & "\" & ArchivoSalida)
                                Else
                                    'Folder en el mismo equipo
                                    File.Copy(Archivo, Servidor & "\" & ArchivoSalida, True)
                                End If
                            End If

                            'Folder de red
                            If Right(RutaRespaldo, 2).ToUpper = "\\" Then
                                CopiarEnRecursoRed(Usuario, Clave, Archivo, RutaRespaldo & "\" & ArchivoSalida)
                            Else
                                'Folder en el mismo equipo
                                File.Copy(Archivo, RutaRespaldo & "\" & ArchivoSalida, True)
                            End If
                        Catch ex As Exception
                            rp.AddErrores("Error al cargar archivo de interfaz : " & ex.Message)
                        End Try
                    Catch ex As Exception
                        rp.AddErrores("Error al cargar archivo de interfaz : " & ex.Message)
                    End Try
                    'Else
                    ' rp.AddErrores("Error al Invocar CONSULTA SQL: " & rp0.MensajeError)
                    '  End If

                Catch ex As Exception
                    rp.AddErrores("Error al Invocar SRM : " & ex.Message)
                    Return
                End Try
            End If
        Catch ex As Exception
            rp.AddErrores(ex.Message)
        End Try
    End Sub
End Class